實時視頻流非常受歡迎,而且還在不斷增長。亞馬遜的 Twitch 和谷歌的 YouTube 等平臺擁有數百萬用戶,他們流式傳輸和消費無數小時的直播和錄制媒體。這些服務通常可以免費使用,但需要您擁有一個帳戶,并且通常將您的內容隱藏在廣告中。有些人不需要他們的視頻可供大眾使用,或者只是想要更多地控制他們的內容。幸運的是,借助開源軟件的強大功能,任何人都可以設置直播服務器。
入門
在本教程中,我將解釋如何使用 Linux 或 BSD 操作系統設置基本的實時流媒體服務器。
這導致不可避免的系統需求問題。這些可能會有所不同,因為直播涉及很多變量,例如:
- 流媒體質量:您想以高清晰度進行流式傳輸還是標準清晰度符合您的需求?
- 收視率:您希望您的視頻有多少觀眾?
- 存儲:您是否打算保留已保存的視頻流副本?
- 訪問:您的流是私有的還是向全世界開放的?
在系統要求方面沒有固定規則,因此我建議您嘗試并找到最適合您需求的方法。我將服務器安裝在具有 4GB RAM、20GB 硬盤驅動器和單個 Intel i7 處理器內核的虛擬機上。
該項目使用實時消息傳遞協議 (RTMP) 來處理音頻和視頻流。還有其他可用的協議,但我選擇了 RTMP,因為它有廣泛的支持。隨著像 WebRTC 這樣的開放標準變得更加兼容,我會推薦這條路線。
知道“實時”并不總是意味著即時也很重要。視頻流必須經過編碼、傳輸、緩沖和顯示,這通常會增加延遲。根據您創建的流類型及其屬性,可以縮短或延長延遲。
設置 Linux 服務器
您可以使用許多不同的 Linux 發行版,但我更喜歡 Ubuntu,因此我為我的操作系統下載了?Ubuntu Server版本。如果您希望您的服務器具有圖形用戶界面 (GUI),請隨意使用Ubuntu Desktop或其多種風格之一。然后,我在我的計算機或虛擬機上啟動了 Ubuntu 安裝程序,并選擇了最適合我的環境的設置。以下是我采取的步驟。
注意:因為這是一個服務器,您可能需要設置一些靜態網絡設置。

安裝程序完成并重新啟動系統后,您將看到一個可愛的新 Ubuntu 系統。與任何新安裝的操作系統一樣,安裝任何可用的更新:
須藤 apt 升級
這個流媒體服務器將使用非常強大和通用的 Nginx Web 服務器,所以你需要安裝它:
sudo apt install nginx
然后您需要獲取 RTMP 模塊,以便 Nginx 可以處理您的媒體流:
-apt-?repository 宇宙須藤 apt 安裝 libnginx-mod-rtmp
調整您的 Web 服務器的配置,使其能夠接受和傳送您的媒體流。
sudo nano /etc/nginx/nginx.conf
滾動到配置文件的底部并添加以下代碼:
服務器 {
聽 1935;
塊大小 4096;? ? ? ? ? ? ? ? 應用直播 {
直播;
注銷;
}
}
}

保存配置。因為我是異端,所以我使用Nano來編輯配置文件。在 Nano 中,您可以通過按Ctrl+X、Y,然后按 Enter來保存您的配置。
這是一個非常小的配置,將創建一個工作流服務器。稍后您將添加到此配置中,但這是一個很好的起點。
但是,在開始第一個流之前,您需要使用新配置重新啟動 Nginx:
sudo systemctl restart nginx
設置 BSD 服務器
如果您相信“野獸”,那么啟動并運行流媒體服務器也非常容易。
前往FreeBSD網站并下載最新版本。在您的計算機或虛擬機上啟動 FreeBSD 安裝程序并完成初始步驟并選擇最適合您環境的設置。由于這是一個服務器,您可能需要設置一些靜態網絡設置。
安裝程序完成并重新啟動系統后,您應該擁有一個閃亮的新 FreeBSD 系統。像任何其他新安裝的系統一樣,您可能希望更新所有內容(從這一步開始,請確保您以 root 身份登錄):
pkg 升級
我安裝?Nano來編輯配置文件:
pkg install nano
這個流媒體服務器將使用非常強大和通用的 Nginx Web 服務器。您可以使用FreeBSD 吹噓的優秀端口系統來構建 Nginx?。
首先,更新您的端口樹:
portnap 提取
瀏覽到 Nginx 端口目錄:
cd /usr/ports/www/nginx
并通過運行開始構建 Nginx:
make install
您將看到一個屏幕,詢問您的 Nginx 構建中要包含哪些模塊。對于這個項目,您需要添加 RTMP 模塊。向下滾動直到選中 RTMP 模塊,然后按Space。然后按Enter繼續其余的構建和安裝。
Nginx 安裝完成后,就該為流式傳輸目的配置它了。
首先,在/etc/rc.conf 中添加一個條目以確保 Nginx 服務器在您的系統啟動時啟動:
nano /etc/rc.conf
將此文本添加到文件中:
nginx_enable="YES"

接下來,創建一個 webroot 目錄,Nginx 將從中提供其內容。我稱我的流:
mkdir 流
chmod -R 755 流/
現在你已經創建了你的流目錄,通過編輯它的配置文件來配置 Nginx:
nano /usr/local/etc/nginx/nginx.conf
在文件頂部加載您的流媒體模塊:
load_module /usr/local/libexec/nginx/ngx_rtmp_module.so;

在Server部分下,更改 webroot 位置以匹配您之前創建的位置:
root /usr/local/www/stream
}

最后,添加您的 RTMP 設置,以便 Nginx 知道如何處理您的媒體流:
服務器 {
聽 1935;
塊大小 4096;? ? ? ? ? ? ? ? 應用直播 {
直播;
注銷;
}
}
}
保存配置。在 Nano 中,您可以通過按Ctrl+X、Y,然后按 Enter來執行此操作。
如您所見,這是一個非常小的配置,它將創建一個工作流服務器。稍后,您將添加到此配置中,但這將為您提供一個很好的起點。
但是,在開始第一個流之前,您需要使用新配置重新啟動 Nginx:
service nginx restart
設置您的流媒體軟件
使用 OBS 進行廣播
現在您的服務器已準備好接受您的視頻流,是時候設置您的流媒體軟件了。本教程使用功能強大的開源 Open Broadcast Studio (OBS)。
前往OBS 網站,找到適用于您的操作系統的版本并安裝它。OBS 啟動后,您應該會看到一個首次運行向導,該向導將幫助您使用最適合您的硬件的設置來配置 OBS。

OBS 沒有捕獲任何內容,因為您沒有為其提供源。在本教程中,您只需為流捕獲桌面。只需單擊Source下的+按鈕,選擇Screen Capture,然后選擇要捕獲的桌面。
單擊“確定”,您應該會看到 OBS 鏡像您的桌面。
現在是時候將您新配置的視頻流發送到您的服務器了。在 OBS 中,單擊文件>設置。單擊Stream部分,并將Stream Type設置為Custom Streaming Server。
在 URL 框中,輸入前綴rtmp://后跟流媒體服務器的 IP 地址,后跟/live。例如,??rtmp://IP-ADDRESS/live。
接下來,您可能需要輸入一個流密鑰——查看您的流所需的特殊標識符。在流密鑰框中輸入您想要(并且可以記住)的任何密鑰。

單擊“應用”,然后單擊“確定”。
現在 OBS 已配置為將您的流發送到您的服務器,您可以開始您的第一個流。單擊開始流式傳輸。
如果一切正常,您應該會看到按鈕更改為停止流式傳輸, 并且一些帶寬指標將出現在 OBS 的底部。

如果您收到錯誤消息,請仔細檢查 OBS 中的“流設置”是否存在拼寫錯誤。如果一切看起來都不錯,則可能是另一個問題阻止了它的工作。
查看您的流
如果沒有人觀看,直播視頻就不是很好,所以請成為您的第一個觀眾!
有許多支持 RTMP 的開源媒體播放器,但最著名的可能是VLC 媒體播放器。
安裝并啟動 VLC 后,單擊Media?>?Open Network Stream打開您的流。輸入流的路徑,添加您在 OBS 中設置的流密鑰,然后單擊播放。例如,??rtmp://IP-ADDRESS/live/SECRET-KEY。
您現在應該可以查看您自己的實時視頻流!

下一步去哪里?
這是一個非常簡單的設置,可以讓您起步。以下是您可能想要使用的另外兩個功能。
- 限制訪問:您可能想要采取的下一步是限制對您的服務器的訪問,因為默認設置允許任何人與服務器進行流傳輸。有多種設置方法,例如操作系統防火墻、.htaccess 文件,甚至使用RTMP 模塊中的內置訪問控制。
- 錄制流:這個簡單的 Nginx 配置只會流而不會保存您的視頻,但這很容易添加。在 Nginx 配置中,在 RTMP 部分下,設置錄制選項和要保存視頻的位置。確保您設置的路徑存在并且 Nginx 能夠寫入它。
直播;
全部記錄;
record_path /var/www/html/recordings;
record_unique on;
}
實時流媒體的世界在不斷發展,如果您對更高級的用途感興趣,可以在互聯網上找到許多其他很棒的資源。祝你好運,直播快樂!文章來源